package com.snack.shop.service;

import java.util.List;

/**
 * 文件管理服务接口
 */
public interface FileManageService {

    /**
     * 记录文件上传
     * @param fileName 文件名
     * @param filePath 文件相对路径
     * @param fileUrl 文件URL
     * @param fileSize 文件大小
     * @param module 业务模块
     * @param uploadDate 上传日期
     * @param uploaderId 上传者ID
     * @return 文件记录ID
     */
    Long recordUpload(String fileName, String filePath, String fileUrl, Long fileSize, 
                      String module, String uploadDate, Long uploaderId);

    /**
     * 将文件状态从临时转为正式
     * @param fileUrls 文件URL列表
     * @param refType 关联业务类型
     * @param refId 关联业务ID
     */
    void confirmFiles(List<String> fileUrls, String refType, Long refId);

    /**
     * 标记文件为已删除
     * @param fileUrls 文件URL列表
     */
    void markDeleted(List<String> fileUrls);

    /**
     * 清理临时文件（超过指定天数）
     * @param days 天数
     * @return 清理的文件数量
     */
    int cleanTemporaryFiles(int days);

    /**
     * 清理已删除文件（超过指定天数）
     * @param days 天数
     * @return 清理的文件数量
     */
    int cleanDeletedFiles(int days);

    /**
     * 物理删除文件
     * @param fileUrl 文件URL
     * @return 是否成功
     */
    boolean deletePhysicalFile(String fileUrl);
}

